package org.ssm.service;

import java.util.List;

import org.ssm.dto.Exposer;
import org.ssm.dto.SeckillExecution;
import org.ssm.entity.Seckill;
import org.ssm.exception.RepeatKillException;
import org.ssm.exception.SeckillCloseException;
import org.ssm.exception.SeckillException;

public interface SeckillService {

    // 查询所有秒杀
    List<Seckill> getSeckillList();

    // 查询单个秒杀
    Seckill getById(long seckillId);

    // 输出秒杀接口
    Exposer exportSeckillUrl(long seckillId);

    // 执行秒杀操作
    SeckillExecution executeSeckill(long seckillId, Long userPhone, String md5)
        throws SeckillException, SeckillCloseException, RepeatKillException;
    
    /**
     * 调用存储过程来执行秒杀操作，不需要抛出异常
     * 
     * @param seckillId 秒杀的商品ID
     * @param userPhone 手机号码
     * @param md5 md5加密值
     * @return 根据不同的结果返回不同的实体信息
     */
    SeckillExecution executeSeckillProcedure(long seckillId,long userPhone,String md5);

}
